package com.foreknow.demo24;

import java.sql.*;

/**
 * JDBC：它是连接数据库(关系型数据库)的一种技术
 * 1.Java提供了访问数据库的一系列的接口的声明
 * 2.各个数据库的厂商提供这些接口的实现类，通过这些实现类可以访问对应的数据库(驱动)
 *
 * 3.通过连接发送SQL语句，数据库给出执行的结果
 *
 * 访问网络中的某个数据库，需要以下信息
 * 1. IP地址：localhost   127.0.0.1
 * 2. 数据库的端口号
 * 3. 数据库的用户名与密码
 * 4. 数据库的名称
 * 以上这些内容会组一个"连接字符串"
 *
 * JDBC API文档：java.sql包
 *
 * 1、JDBC连接Mysql5 com.mysql.jdbc.Driver:
 *
 * driverClassName=com.mysql.jdbc.Driver
 * url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&useSSL=false
 * username=root
 * password=
 *
 *
 * 2、JDBC连接Mysql6 com.mysql.cj.jdbc.Driver， 需要指定时区serverTimezone:
 *
 * driverClassName=com.mysql.cj.jdbc.Driver
 * url=jdbc:mysql://localhost:3306/test?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8&useSSL=false
 * username=root
 * password=
 *
 * JDBC的流程：
 * 1.加载驱动
 * 2.获取连接 Connection接口
 * static Connection	getConnection(String url, String user, String password)
 *           试图建立到给定数据库 URL 的连接。
 * url - jdbc:subprotocol:subname 形式的数据库 url
 * user - 数据库用户，连接是为该用户建立的
 * password - 用户的密码
 * 3.获取Statement接口：主要用于对数据进行一些操作，用于执行静态 SQL 语句并返回它所生成结果的对象。
 * Statement	createStatement() ------Connection 创建一个 Statement 对象来将 SQL 语句发送到数据库。
 * ResultSet	executeQuery(String sql)
 *           执行给定的 SQL 语句，该语句返回单个 ResultSet 对象。
 * int	executeUpdate(String sql)
 *           执行给定 SQL 语句，该语句可能为 INSERT、UPDATE 或 DELETE 语句，或者不返回任何内容的 SQL 语句（如 SQL DDL 语句）。
 * 4. ResultSet接口：表示结果集(集合)
 * 5.关闭资源
 */
public class Test {
  public static void main(String[] args) {

    try {
      //1.加载驱动程序
      Class.forName("com.mysql.jdbc.Driver");
      //2.获取连接
      Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/demodb?useUnicode=true&characterEncoding=utf8&useSSL=false","root","zjjlive82");
      //3.获取Statement接口
      Statement statement = connection.createStatement();
      //4.查询
      ResultSet resultSet = statement.executeQuery("select * from emp");
      while (resultSet.next()){
        //如何获取到当前行的第几列数据
        int empno = resultSet.getInt("empno");
        String ename = resultSet.getString("ename");
        String job = resultSet.getString("job");
        //输出信息
        System.out.println(empno+"--"+ename+"--"+job);
      }
      //5.关闭资源
      resultSet.close();
      statement.close();
      connection.close();
    } catch (ClassNotFoundException e) {
      e.printStackTrace();
    } catch (SQLException e) {
      e.printStackTrace();
    }
  }
}
